
#ifndef __SOCK_INET_HPP__
#define __SOCK_INET_HPP__

////////////////////////////////////////////////////////////////////////////////

#include <sys/socket.h>
#include <stdint.h>

////////////////////////////////////////////////////////////////////////////////

class sock_inet
{
public:
    class address
    {
    public:
        address(uint32_t host, uint16_t service);
        operator const sockaddr&() const;
        const sockaddr& get_sockaddr() const;
        bool operator==(const address& lhs) const;

    protected:
        sockaddr addr;
    };

    class timeout
    {
    public:
        timeout(int64_t usec);
        int64_t get_usec() const;

    protected:
        int64_t usec;
    };

    bool wait(const timeout& t);
    ~sock_inet();

protected:
    sock_inet();
    sock_inet(int type, int protocol);
    void bind(const address& a);

    int sfd;
};

////////////////////////////////////////////////////////////////////////////////

#endif
